package done.normal_801_900;

import com.study.common.TreeNode;
import org.junit.Test;

import static com.study.util.LogUtil.info;

/**
 * 814. Binary Tree Pruning 二叉树剪枝
 * <p>
 * 给定二叉树根结点 root ，此外树的每个结点的值要么是 0，要么是 1。
 * 返回移除了所有不包含 1 的子树的原二叉树。
 * ( 节点 X 的子树为 X 本身，以及所有 X 的后代。)
 * <p>
 * 示例1:
 * 输入: [1, null, 0, 0, 1]
 * 输出: [1, null, 0, null, 1]
 * 解释:
 * 只有红色节点满足条件“所有不包含 1 的子树”。
 * 右图为返回的答案。
 * <p>
 * 示例2:
 * 输入: [1, 0, 1, 0, 0, 0, 1]
 * 输出: [1, null, 1, null, 1]
 * <p>
 * 示例3:
 * 输入: [1, 1, 0, 1, 1, 0, 1, 0]
 * 输出: [1, 1, 0, 1, 1, null, 1]
 * <p>
 * 答案：以下四种情况就是null，否则不变
 * <p>
 * 0
 * /   \   -> null
 * 0     0
 * <p>
 * 0
 * /   \    -> null
 * nil    0
 * <p>
 * 0
 * /   \   -> null
 * nil  nil
 * <p>
 * null    -> null
 */
@SuppressWarnings("all")
public class BinaryTreePruning {

    public TreeNode pruneTree(TreeNode root) {
        // 190513 first
        return root;
    }

    @Test
    public void test() {
        info(pruneTree(new TreeNode(1,
                new TreeNode(0,
                        0, 0), new TreeNode(1,
                0, 1))));
    }
}














































/*
public TreeNode pruneTree(TreeNode root) {
    if (root==null)
        return null;

    root.left = pruneTree(root.left);

    root.right = pruneTree(root.right);

    if (root.left==null && root.right==null && root!=null && root.val==0)
        return null;

    return root;
}
*/
